<template>
  <div>
    <ul>
      <!-- 二级路由前的一级路由路径要一致 -->
      <li>
        <router-link to="/contacts/allcontacts">All_contacts</router-link>
      </li>
      <li><router-link to="/contacts/alice">Alice</router-link></li>
      <li><router-link to="/contacts/bob">Bob</router-link></li>
    </ul>
    <button @click="changeFn">随机显示</button>
    <!-- 二级路由挂载点 -->
    <!-- 只有一个挂载点，即使同时使用编程式导航和声明式只也只能显示一个路由页面，不能同时显示多个 -->
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  data() {
    return {
      path: ["/contacts/allcontacts", "/contacts/alice", "/contacts/bob"],
    };
  },
  methods: {
    // catch(err => { return err })用来解决版本问题的，没有这个虽然有效果，但是会报错
    //这是因为 vue-router 版本升级到了 v3.1.0 之后，push 和 replace 方法会返回一个 promise，如果没有对错误进行捕获，那么控制台就会输出未捕获异常。
    changeFn() {
      this.$router
        .push({
          path: this.path[Math.floor(Math.random() * 3)],
        })
        .catch((err) => {
          return err;
        });
    },
  },
};
</script>

<style>
</style>